The present disclosure relates generally to methods and systems for creating a text label for a digital image object, for example, for use with creating computer scripts for remote testing of software applications.
In recent times, more and more computer programs are being developed and used to facilitate aspects of modern life. As computing power and demand for new software features increase, so does the complexity of software products and the code that drives them. This includes increased inter-operability with different devices and software applications. As the computer application and device market becomes more competitive, the number of different device types and operating systems also increases. A program developer is therefore often faced with various devices using various communication protocols and various other software applications to take into account when developing new software. As a result, the intended software product becomes increasingly prone to errors, flaws, failures, or faults (otherwise known as ‘bugs’) in the program. Typically, these ‘bugs’ are only discovered when the software is run. The testing of a software product, pre-launch, is therefore important to a software developer.
Software test engineers commonly test the performance of a program both pre and post launch. When performing testing, it is desirable to test out the software on a large number of devices and operating systems to ensure the product is ready for widespread sale for (and can be supported by) all types of computer system. This can be a time consuming exercise whereby the test engineer will ideally want to test devices remotely, rather than having to be physically present at each device under test. Typically the same test will need to be executed a number of different times on the same operating system. Furthermore, when having to perform the same test on a number of different devices, the test engineer would ideally want to run the same sequence of steps without actually having to input each and every step for every test.
One of the most important times to test software is when new versions of the software are released. When such new versions are released, a development team typically creates a “candidate” version of the software. The software testers then test it to find bugs and send the candidate version back to the development team for improvement. The development team then creates a new “candidate”. The testers then re-test it to find further bugs and again send it back to development. This loop continues until the software works correctly and it is delivered to customers.
At some further point in time, the development team will typically add some new features to the existing program. The testers then not only have to test the new features, but also that the old features have not ‘broken’ (i.e. ceased to operate as desired) with the introduction of and/or interaction with the changes. This is called “regression testing”. Therefore over the life of a software product, a single test case will be executed 10s, 100s, possibly 1000s of times.
Test scripts are used to test the whole or part of the functionality of the program/system under test. Running the test script allows the program/system under test to be tested automatically. Some testing programs have been developed to remotely test programs and systems. One such software tool to help software engineers automate the testing process by forming a common test script is ‘EggPlant™’ by TestPlant™. The EggPlant™ software takes an image from the GUI (Graphical User Interface) of a device under test and allows a user to remotely test and develop a testing script for the said device by interacting with the GUI image. Common test scripts that can be used for testing different devices/operating systems running the same program under test (or target program) are desirable to save the test engineer from writing multiple different scripts to test the same program under test.
Typical script generation requires the user creating the script to manually type or otherwise input the lines of code, including labels for items. For example, when using GUI-based software test-automation tools, the user creating the testing script will manually input a label for a graphical object that the script is interacting with, such as a ‘click here’ button on a screen that drives a process in the program under test. For programs with increased complexity, the script to automate the testing of the program also becomes increasingly long and complex, making it more time consuming for the test engineer to develop the script, particularly if there is a deadline to develop a script that can test all the program's functionalities.